package org.jaaksi.demo.ptr.ui;

import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import in.srain.cube.views.ptr.PtrClassicFrameLayout;
import in.srain.cube.views.ptr.PtrDefaultHandler;
import in.srain.cube.views.ptr.PtrFrameLayout;
import org.jaaksi.demo.ptr.R;
import org.jaaksi.demo.ptr.adapter.MyAdapter;
import org.jaaksi.demo.ptr.bean.DataInfo;
import org.jaaksi.demo.ptr.view.LoadMoreListView;

import java.util.ArrayList;

public class PtrNormalActivity extends FragmentActivity
{
	private Handler handler = new Handler();

	private int page = 0;

	public static void goTo(Context context)
	{
		Intent intent = new Intent(context, PtrNormalActivity.class);
		context.startActivity(intent);
	}

	/**
	 * @param savedInstanceState
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_pull);

		final LoadMoreListView listview = (LoadMoreListView) findViewById(
		        R.id.listview);

		// 貌似不支持自定义刷新文案，除非自定义header,可以引用library形势，添加该属性
		final PtrClassicFrameLayout ptr = (PtrClassicFrameLayout) findViewById(
		        R.id.ptr);
		// 关联上次下拉刷新的时间，设置哪个都可以，不设置则不显示
		ptr.setLastUpdateTimeKey(PtrNormalActivity.class.getName());
		// ptr.setLastUpdateTimeRelateObject(this);

		// 设置阻尼系数
		ptr.setResistance(1.7f);
		// 触发刷新时移动的位置比例，默认，1.2f，移动达到头部高度 1.2 倍时可触发刷新操作。
		ptr.setRatioOfHeaderHeightToRefresh(1.2f);
		// 回弹延时，默认 200ms，回弹到刷新高度所用时间
		ptr.setDurationToClose(200);
		// 头部回弹时间，默认 1000ms。
		ptr.setDurationToCloseHeader(1000);
		// 设置下拉达到高度后自动刷新（默认释放刷新）
		ptr.setPullToRefresh(false);
		// 刷新是否保持头部，默认值 true
		ptr.setKeepHeaderWhenRefresh(true);
		// 自定义headerview
//		WindmillHeader header = new WindmillHeader(this);
//		ptr.setHeaderView(header);
//		ptr.addPtrUIHandler(header);

		// 设置在刷新过程中header偏移量，如果<0这= mHeaderHeight，默认值-1
		// ptr.setOffsetToKeepHeaderWhileLoading(100);
		// 不要使用PtrHandler的时候checkCanDoRefresh方法直接返回true，推荐使用PtrDefaultHandler
		ptr.setPtrHandler(new PtrDefaultHandler()
		{
			@Override
			public void onRefreshBegin(PtrFrameLayout frame)
			{
				// TODO 请求数据，数据请求完成后调用refreshComplete关闭
				handler.postDelayed(new Runnable()
				{
					@Override
					public void run()
					{
						// TODO 如果有更多数据
						page = 1;
						listview.setHasMore(true);
						ptr.refreshComplete();
					}
				}, 2000);
			}
		});

//		handler.postDelayed(new Runnable()
//		{
//			@Override
//			public void run()
//			{ // TODO 在onCreate之后自动加载一次数据
//				ptr.autoRefresh(true);
//			}
//		}, 200);

		listview.setOnLoadMoreListener(new LoadMoreListView.OnLoadMoreListener()
		{
			@Override
			public void onLoadMore()
			{
				handler.postDelayed(new Runnable()
				{
					@Override
					public void run()
					{
						// TODO 根据total判断页数，如果最后一页就设置为nomore,会把foterview gone掉
						if (++page > 2)
						{
							listview.setHasMore(false);
						}
						else
						{
							listview.setHasMore(true);
						}

					}
				}, 2000);

			}
		});
		MyAdapter adapter = new MyAdapter(this);
		listview.setAdapter(adapter);

		ArrayList<DataInfo> dataInfos = new ArrayList<>();
		for (int i = 0; i < 20; i++)
		{
			dataInfos.add(new DataInfo("test" + i));
		}
		adapter.setDatas(dataInfos);
	}
}
